/**
 * 卡片组件预览处理
 * 用于处理卡片组件在预览模式下的特殊行为和数据适配
 */

export default {
  /**
   * 准备预览数据
   * @param {Object} component 组件数据
   * @returns {Object} 处理后的组件数据
   */
  preparePreviewData(component) {
    // 复制组件数据，避免修改原始数据
    const previewComponent = JSON.parse(JSON.stringify(component));
    
    // 确保props存在
    if (!previewComponent.props) {
      previewComponent.props = {};
    }
    
    // 确保datas存在
    if (!previewComponent.props.datas) {
      previewComponent.props.datas = {};
    }
    
    // 修复：确保卡片属性被保留
    const cardDatas = {
      ...previewComponent.props.datas,
      // 确保这些关键属性存在
      header: previewComponent.props.datas.header || '卡片标题',
      content: previewComponent.props.datas.content || '卡片内容',
      shadow: previewComponent.props.datas.shadow || 'always',
      bodyStyle: previewComponent.props.datas.bodyStyle || { padding: '20px' },
      borderRadius: previewComponent.props.datas.borderRadius || '4px',
      backgroundColor: previewComponent.props.datas.backgroundColor || '#ffffff',
      width: previewComponent.props.datas.width || '100%',
      height: previewComponent.props.datas.height || '100%',
      showHeader: previewComponent.props.datas.showHeader !== false // 默认显示标题
    };
    
    // 卡片特定的预览适配
    return {
      ...previewComponent,
      isPreviewMode: true,
      props: {
        ...previewComponent.props,
        datas: cardDatas
      }
    };
  },
  
  /**
   * 预览渲染选项
   */
  renderOptions: {
    useWrapper: true,        // 是否使用包装容器
    interactive: false,      // 卡片通常不需要交互
    renderChildren: true     // 是否渲染子组件
  },
  
  /**
   * 处理预览模式的交互
   * @param {Object} component 组件数据
   * @param {Object} context 上下文
   */
  handlePreviewInteraction(component, context) {
    console.log('卡片在预览模式被点击:', component.id);
    return true; // 允许事件冒泡
  }
}; 